package com.chixing.day11_exception;


import java.util.Arrays;
import java.util.Map;

public class MapSum {

    private Entry[] entryArr;
    private int size;

    //构造函数 初始化
    public MapSum(){
        this(16);
    }
    public MapSum(int initXapacity){
        entryArr = new Entry[initXapacity];
    }

    //将键值对看成对象
    //内部类
    private class Entry{
        String  key;
        int value;

        public Entry(String key, int value) {
            this.key = key;
            this.value = value;
        }
    }

    /*
    * 插入key-val键值对 字符串表示键key  整数表示value
    * 如果key已经存在 那么原来的键值对将被替代成新的键值对
    * */
    public void insert(String key, int value){
        if (containerKey(key)){   //key已存在
            Entry entry = get(key);
            entry.value = value;
        }else {   //不存在
            if (size == entryArr.length)  //扩容
                entryArr = Arrays.copyOf(entryArr,entryArr.length << 1); //扩2n copyOf 将扩容前的内容赋值过来
            entryArr[size++] = new Entry(key,value);
        }

    }

    //判断key值是否存在
    private boolean containerKey(String key){
        for (int i = 0;i < size;i++){
            if (entryArr[i].key.equals(key))  //不能用等号比较，等号比较的是地址，需要比较的是内容
                return true;
        }
        return false;

    }

    //根据key获得当前键值对对象

    private Entry get(String key){
        for (int i = 0;i < size;i++){
            if (entryArr[i].key.equals(key))
                return entryArr[i];
        }
        return null;

    }

    //获得容器中已有元素的个数
    public int size(){
        return this.size;
    }

    public void show(){
        for(int i =0;i<size;i++){
            System.out.println(entryArr[i].key + "-" +entryArr[i].value );
        }
    }



}
